/*!
   \file

   © 2011 Mark W. Gabby II

   This file is part of the Avion engine.

   The Avion engine is free software: you can redistribute it and/or modify it under the terms of
   the GNU General Public License as published by the Free Software Foundation, either version 3 of
   the License, or (at your option) any later version.

   The Avion engine is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
   without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
   the GNU General Public License for more details.

   You should have received a copy of the GNU General Public License along with the Avion Engine.
   If not, see <http://www.gnu.org/licenses/>.
*/

#pragma once

#include "Systems/Constants/PlatformTypes.hpp"

namespace iInput
{
/*!
   Sets up a list of controllers with controller information.
*/
ControllerInfo GetControllerInfo( const tControllerIndex ControllerIndex );
/*!
   \return
      The number of controllers in the system.
*/
tControllerIndex GetControllerCount();

/*!
   Captures the controller with the specified index.

   \return
      True if captured, false if not captured. Can fail with invalid index, no controller, or no
      current OS window.
*/
bool CaptureController( const tControllerIndex ControllerIndex, const tWindowID WindowID = 0 );

/*!
   \brief
      Returns the index of the captured controller, or kNull8 if none are captured.
*/
tControllerIndex GetCapturedControllerIndex( const tWindowID WindowID = 0 );

/*!
   \brief
      If a controller is captured, releases it.

   \return
      True if a controller had been captured and was released. False if release failed.
*/
bool ReleaseController( const tWindowID WindowID = 0 );
}
